Template Inheritance Django তে একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে একটি মূল টেমপ্লেট তৈরি করতে এবং তার পরে অন্যান্য টেমপ্লেটগুলি তৈরি করতে সাহায্য করে, যেগুলি মূল টেমপ্লেটের কাঠামো (structure) পুনরায় ব্যবহার করবে। এটি কোড পুনঃব্যবহারযোগ্যতা এবং রক্ষণাবেক্ষণ সহজ করে তোলে। মূলত, টেমপ্লেট ইনহেরিটেন্স ব্যবহার করে একটি "বেস" টেমপ্লেট তৈরি করা হয়, এবং অন্যান্য টেমপ্লেটগুলিতে সেই বেস টেমপ্লেট থেকে কাঠামো পাওয়া যায়।
Template Inheritance এর মূল ধারণা
Django তে টেমপ্লেট ইনহেরিটেন্স সাধারণত দুটি উপাদান ব্যবহার করে:
{% extends "base.html" %}: এটি নির্দেশ করে যে এই টেমপ্লেটটি "base.html" টেমপ্লেটটি ইনহেরিট করবে।{% block block_name %}এবং{% endblock %}: ব্লক ডিফাইন করে যা সাব-টেমপ্লেটের মধ্যে কাস্টম কন্টেন্ট ইনজেক্ট করতে ব্যবহৃত হয়।
Template Inheritance কনফিগারেশন প্রক্রিয়া
১. বেস টেমপ্লেট তৈরি করা
প্রথমে একটি বেস টেমপ্লেট তৈরি করুন, যা অ্যাপ্লিকেশনটির মূল কাঠামো ধারণ করবে। এই টেমপ্লেটটি সাধারণত base.html নামে তৈরি হয়।
base.html উদাহরণ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}My Website{% endblock %}</title>
</head>
<body>
<header>
<h1>Welcome to My Website</h1>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about/">About</a></li>
<li><a href="/contact/">Contact</a></li>
</ul>
</nav>
</header>
<main>
{% block content %}
<!-- Content will be inserted here -->
{% endblock %}
</main>
<footer>
<p>© 2024 My Website</p>
</footer>
</body>
</html>
এখানে:
{% block title %}এবং{% block content %}ব্লকগুলি সংজ্ঞায়িত করা হয়েছে। এই ব্লকগুলির মধ্যে ডিফল্ট কন্টেন্ট থাকবে, কিন্তু যেকোনো সাব-টেমপ্লেট এগুলির ভ্যালু ওভাররাইড (override) করতে পারে।
২. সাব-টেমপ্লেট তৈরি করা
এখন আপনি যেকোনো টেমপ্লেট তৈরি করতে পারেন যা base.html থেকে ইনহেরিট করবে এবং তার কাঠামো ব্যবহার করবে। উদাহরণস্বরূপ, একটি home.html সাব-টেমপ্লেট তৈরি করা যাক।
home.html উদাহরণ:
{% extends "base.html" %}
{% block title %}Home Page{% endblock %}
{% block content %}
<h2>Welcome to the Home Page</h2>
<p>This is the content of the home page.</p>
{% endblock %}
এখানে:
{% extends "base.html" %}: এটি নির্দেশ করে যেhome.htmlটেমপ্লেটটিbase.htmlটেমপ্লেটটি ইনহেরিট করছে।{% block title %}: এই ব্লকটিbase.htmlএরtitleব্লককে ওভাররাইড করছে।{% block content %}: এই ব্লকটিbase.htmlএরcontentব্লককে ওভাররাইড করছে এবং এতে কাস্টম কন্টেন্ট ইনজেক্ট করছে।
৩. আরও সাব-টেমপ্লেট তৈরি করা
আপনি আরও অনেক সাব-টেমপ্লেট তৈরি করতে পারেন যা বেস টেমপ্লেটের কাঠামো অনুসরণ করবে। যেমন, একটি about.html টেমপ্লেট:
about.html উদাহরণ:
{% extends "base.html" %}
{% block title %}About Us{% endblock %}
{% block content %}
<h2>About Our Website</h2>
<p>This is the about page where you can learn more about us.</p>
{% endblock %}
এখানে, **about.html**ও একইভাবে base.html এর কাঠামো ব্যবহার করছে, তবে শুধুমাত্র title এবং content ব্লকগুলোকে কাস্টমাইজ করা হয়েছে।
Template Inheritance এর সুবিধা
- কোড পুনঃব্যবহারযোগ্যতা: একবার বেস টেমপ্লেট তৈরি করার পর, আপনি আপনার সমস্ত সাব-টেমপ্লেটে একই কাঠামো পুনরায় ব্যবহার করতে পারেন।
- সহজ রক্ষণাবেক্ষণ: আপনার ওয়েবসাইটের সমস্ত পেজের লেআউট বা কাঠামো পরিবর্তন করতে হলে, কেবলমাত্র বেস টেমপ্লেটে পরিবর্তন আনলেই হবে। এর ফলে, সব পেজে পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে প্রতিফলিত হবে।
- কাস্টম কন্টেন্ট ইনজেকশন: টেমপ্লেট ইনহেরিটেন্স ব্লক ব্যবহারের মাধ্যমে আপনি প্রতিটি পেজের কাস্টম কন্টেন্ট ইনজেক্ট করতে পারবেন, যা একাধিক পেজে নির্দিষ্ট কন্টেন্ট প্রদর্শনের জন্য উপকারী।
Conclusion
Django তে Template Inheritance এর মাধ্যমে আপনি সহজেই আপনার ওয়েব অ্যাপ্লিকেশনগুলির কাঠামো এবং লেআউট বজায় রাখতে পারেন, এবং একাধিক পেজে কোড পুনরায় ব্যবহার করে উন্নত রক্ষণাবেক্ষণ এবং কার্যকারিতা নিশ্চিত করতে পারেন।
Read more